﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Data.SqlClient;
using System.Configuration;

namespace RedesII_DAL
{
    public class DaoFactory
    {
        /* O ADO.Net já possui factories nativas: as classes para
         * sua manipulação são:
         *   - DbProviderFactories: fornece acesso a qualquer uma
         *       das factories disponíveis;
         *   - DbProviderFactory: implementa uma classe factory 
         *       para um provider específico.
         */
        private DbProviderFactory factory;

        public DaoFactory()
        {
            string providerName = ConfigurationManager.AppSettings["Provider"];
            factory = DbProviderFactories.GetFactory(providerName);
        }

        public DbConnection CriaConexao()
        {
            DbConnection connection = factory.CreateConnection();
            //usando o gerenciador de configuração para ler uma connection string
            //TODO:Trocar
            //connection.ConnectionString =
            //    ConfigurationManager.ConnectionStrings["ConexaoDefault"].ConnectionString;
            connection.ConnectionString =
                ConfigurationManager.ConnectionStrings["ConexaoDefault"].ConnectionString;
            return connection;
        }

        public DbCommand CriaComando()
        {
            return factory.CreateCommand();
        }

        public DbDataAdapter CriaAdapter()
        {
            return factory.CreateDataAdapter();
        }
    }
}
